package org.ipower.platform.action;

import com.opensymphony.xwork2.ActionSupport;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import org.ipower.platform.service.BaseService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
 * Action基础类。
 * @author jeasonyoung
 */
public class BaseAction<T extends BaseService> extends ActionSupport {
    private static final long serialVersionUID = 1L;
    private final Logger logger = LoggerFactory.getLogger(this.getClass());
    private T service = null;
    private boolean asc = true;
    private String  ascProperty;
    private Integer start = 0;
    private Integer limit = 20;
    private Integer page = 0;   
    /**
     * 获取Session。
     * @return Session对象。
     * */
    protected HttpSession getSession(){
        return ServletActionContext.getRequest().getSession();
    }
    /**
     * 获取当前路径。
     * @return 当前路径。
     * */
    protected String CurrentPath(){
        return ServletActionContext.getServletContext().getRealPath("/");
    }
   /**
    * 获取日志记录对象。
    * @return 日志记录对象。
    * */
    protected Logger getLogger() {
        return logger;
    }
    /**
     * 获取服务类对象。
     * @return 服务类对象。
     * */
    protected T getService() {
        return service;
    }
    /**
     * 设置注入服务实体类。
     * @param service 服务实体类。
     * */
    public void setService(T service){
        this.service = service;
    }
    /**
     * 是否升序排列。
     * @return 升序为true,否则为false。
     * */
    protected boolean isAsc() {
        return asc;
    }
    /**
     * 设置是否升序排列。
     * @param asc 升序为true.
     * */
    public void setAsc(boolean asc) {
        this.asc = asc;
    }
    /**
     * 获取排序字段。
     *@return 排序字段。
     * */
    protected String getAscProperty() {
        return ascProperty;
    }
    /**
     * 设置排序字段。
     * @param ascProperty 排序字段。
     * */
    public void setAscProperty(String ascProperty) {
        this.ascProperty = ascProperty;
    }
    /**
     * 获取数据开始索引。
     * @return 数据索引。
     * */
    protected Integer getStart() {
        return start;
    }
    /**
     * 设置数据开始索引。
     * @param start 数据索引。
     * */
    public void setStart(Integer start) {
        this.start = start;
    }
    /**
     * 获取数据条数。
     * @return 数据条数。
     * */
    protected Integer getLimit() {
        return limit;
    }
    /**
     * 设置数据条数。
     * @param limit 数据条数。
     * */
    public void setLimit(Integer limit) {
        this.limit = limit;
    }
    /**
     * 获取页码。
     * @return 页码。
     * */
    protected Integer getPage() {
        return page;
    }
    /**
     * 设置页码。
     * @param 页码。
     * */
    public void setPage(Integer page) {
        this.page = page;
    }
    /**
     * 执行函数。
     * @return 执行结果。
     * */
    @Override
    public String execute() throws Exception{
        return super.execute();
    }
}